import Toast from "./toast"

let currentToast
export default {
  install(Vue, options) {
    Vue.prototype.$toast = function (message, toastOptions) {
      if (currentToast) {currentToast.close()}
      currentToast = createToast({
        Vue,
        message,
        propsData: toastOptions,
        onClose: () => {currentToast = null}
      })
    }
  }
}


// helpers
function createToast({Vue, message, propsData, onClose}) {
  let Constructor = Vue.extend(Toast)
  let toast = new Constructor({propsData})
  toast.$slots.default = [message]
  toast.$mount()
  toast.$on("close", onClose)
  document.body.appendChild(toast.$el)
  return toast
}